<?php
	function PhanQuyenDiemDanh()
	{
		if(!IsGV() && !IsAD() && !IsNVGV())
			header('Location: ../index.php');
	}
	function PhanQuyenNghiepVu()
	{
		if(!IsAD() && !IsNVGV())
			header('Location: ../index.php');
	}
	function PhanQuyenAdmin()
	{
		if(!IsAD())
			header('Location: ../index.php');
	}
	
	function GuiEmail($Email, $NoiDungThu)
	{
		if(file_exists("../email/class.phpmailer.php"))
			require_once('../email/class.phpmailer.php');
		else
			require_once('email/class.phpmailer.php');
		if(file_exists("../classes/gmail_bs.php"))
			include_once '../classes/gmail_bs.php';
		else
			include_once 'classes/gmail_bs.php';
		$Gmail = new gmail_bs();
		$DGmail = $Gmail->LayDanhSach();
		$TDN = $DGmail[0]['TenDangNhap'];
		$MK = $DGmail[0]['MatKhau'];
		$CD = $DGmail[0]['ChuDe'];
		$TBL = $DGmail[0]['ThongBaoLoi'];
		$mail = new PHPMailer();

		$mail->IsSMTP(); 
		$mail->Host       = "mail.gmail.vn"; 
		$mail->SMTPDebug  = ($TBL % 2);  // Giá trị 0 là không báo lỗi khi gửi mail
		$mail->SMTPAuth   = true; 
		$mail->SMTPSecure = "ssl";
		$mail->Host       = "smtp.gmail.com";
		$mail->Port       = 465; 
		$mail->Username   = $TDN;
		$mail->Password   = $MK;

		$mail->SetFrom($TDN, $CD); // Thông tin người gửi mail
		$mail->AddAddress($Email, $CD);
		$mail->AddReplyTo($TDN, $CD);
		$mail->Subject    = $CD;

		$mail->CharSet = "utf-8";
		$mail->Body = $NoiDungThu;
		$mail->IsHTML(true);
		$mail->Send();
	}
	function TachNgayGio($NgayGio)
	{
		$t = explode(' ', $NgayGio);
		$r = array(ConvertDate($t[0]), $t[1]);
		return $r;
	}
	function NgayTrongTuan($Ngay, $Type = 0)
	{
		$tmp1 = explode("-", $Ngay);
		$jd = gregoriantojd($tmp1[1], $tmp1[2], $tmp1[0]);
		$tmp2 = jddayofweek($jd, $Type);
		if($Type == 3)
		{
			$tmpArr = array('Chủ nhật', 'Thứ hai', 'Thứ ba', 'Thứ tư', 'Thứ năm', 'Thứ sáu', 'Thứ bảy');
			return $tmpArr[$tmp2];
		}
		return $tmp2;
	}
	
	function CongNgay($Ngay, $Num = 1)
	{
		$new_date = strtotime ('+' . $Num . ' day', strtotime($Ngay)) ;
		$new_date = date ( 'Y-m-j' , $new_date );
		return $new_date;
	}
	function TruNgay($Ngay, $Num = 1)
	{
		$new_date = strtotime ('-' . $Num . ' day', strtotime($Ngay)) ;
		$new_date = date ( 'Y-m-d' , $new_date );
	}
	function GetKhoaHocCuaHocVien($MaHocVien)
	{
		$tmp = explode(".", $MaHocVien);
		$result = "K" . $tmp[0];
		return $result;
	}
	function GetMaKhoaHoc()
	{
		include_once "khoahoc_bs.php";
		$KhoaHoc = new khoahoc_bs();
		$DKhoaHoc = $KhoaHoc->LayDanhSach();
		if($DKhoaHoc == null)
			return "K1";
		else
			return "";
	}
	function GetMaHoaDon()
	{
		include_once "hoadon_bs.php";
		$HoaDon = new hoadon_bs();
		$DHoaDon = $HoaDon->LayDanhSach(); //Danh sách phải được sắp xếp giảm dần theo mã hóa đơn
		
		if($DHoaDon == null)
			return 1;
		else
			echo ($DHoaDon[0]['MaHoaDon'] + 1);
	}
	/*Get Mã học viên dựa vào Mã khóa học
	 * Mã khóa học K71
	 * Mã học viên 71.XXXX
	*/
	function GetMaHocVien($MaKhoaHoc)
	{
		$MaKhoaHoc = strtoupper($MaKhoaHoc);
		$numK = explode("K", $MaKhoaHoc);
		//Lấy danh sách học viên theo khóa học, sắp xếp giảm dần Mã học viên để xác định mã lớn nhất
		include_once "hocvien_bs.php";
		$HocVien = new hocvien_bs();
		$DataHocVien = $HocVien->DSHVTheoKhoa($MaKhoaHoc);
		if($DataHocVien != null)
		{
			$MaHV = $DataHocVien[0]['MaHocVien'];
			$tmp = explode(".", $MaHV);
			$MaHV = isset($tmp[1]) ? (int)$tmp[1] + 1 : 1;
		}
		else
			$MaHV = 1;	
		if($MaHV < 10)
			return $numK[1] . ".000" . $MaHV;
		elseif($MaHV < 100)
			return $numK[1] . ".00" . $MaHV;
		elseif($MaHV < 1000)
			return $numK[1] . ".0" . $MaHV;
		else
			return $numK[1] . "." . $MaHV;
	}
	
	//Chuyển đổi kiểu định dạng ngày 	dd/mm/yyyy <=> yyyy-mm-dd
	function ConvertDate($Ngay)
	{
		if(strpos($Ngay, "-") !== false)
		{
			$tmp = explode("-", $Ngay);
			$result = $tmp[2] . "/" . $tmp[1] . "/" . $tmp[0];
			return $result;
		}
		elseif(strpos($Ngay, "/") !== false)
		{
			$tmp = explode("/", $Ngay);
			$result = $tmp[2] . "-" . $tmp[1] . "-" . $tmp[0];
			return $result;
		}
		else
			return $Ngay;
	}
	function CurrentURLFull()
	{
		$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
		return $url;
	}
	//Chuyển trang khi gặp lỗi, và hiện thông báo lên trang thông báo lỗi thongbao/loi.php
	function ThongBaoLoi()
	{
		//Trang thong báo lỗi sẽ hiện ra lỗi của biến $_SESSION['Loi']
		header('Location: index.php?act=loi');
	}
	
	function GeneratePIN()
	{
		$t = sha1(substr(md5(rand(0, 1000)), rand(1, 10), 10));
		return $t;
	}
	
	function GenerateMatKhau2()
	{
		$t = substr(md5(rand(0, 1000)), rand(1, 10), 4);
		return strtoupper($t);
	}
	
	function TachHoTen($HoTen)
	{
		$result = array("", "");
		$tmp = explode(" ", $HoTen);
		$n = count($tmp);
		if(count($tmp) > 1)
		{
			$result[1] = $tmp[$n - 1];
			for($i = 0; $i < $n - 1; $i++)
			{
				if($i > 0)
					$result[0] .= " ";
				$result[0] .= $tmp[$i];
			}
			return $result;
		}
		else
		{
			$result[0] = "";
			$result[1] = $HoTen;
			return $result;
		}
	}
	
	function GeneratePass($pass)
	{
		/* $t = sha1(substr(md5($pass), rand(1, 10), 10));
		return md5($t); */
		$t = md5($pass);
		return $t;
	}
	
	function BackPage()
	{
		header('Location: ' . $_SERVER['HTTP_REFERER']);
	}
	
	function PhanTrang($TrangHienTai, $SoBaiViet, $BaiVietMoiTrang, $SoTrangKe, $Link) //$Link . "&page=";
	{
		echo '<div class="PhanTrang">';
			$SoTrang = (int)$SoBaiViet / $BaiVietMoiTrang;
			$SoTrang += ($SoBaiViet % $BaiVietMoiTrang > 0) ? 1 : 0;
			$SoTrang = (int)$SoTrang;
			
			if($TrangHienTai < 1)
				header("Location: " . $Link . "&page=1");
			if($TrangHienTai > $SoTrang)
				header("Location: " . $Link . "&page=" . $SoTrang);
			for($i = 1; $i <= $SoTrang; $i++)
			{
				if($TrangHienTai - $SoTrangKe - 1 == $i || $i == $TrangHienTai + $SoTrangKe + 1)
				{
					if($TrangHienTai - $SoTrangKe - 1 == $i)
					{
						echo "<a href='" . $Link . "&page=1'><div class='First'>&laquo; Đầu</div></a>";
						echo "<a href='" . $Link . "&page=" . ($TrangHienTai - $SoTrangKe - 1) . "'><div>...</div></a>";
					}
					else
					{
						echo "<a href='" . $Link . "&page=" . ($TrangHienTai + $SoTrangKe + 1) . "'><div>...</div></a>";
						echo "<a href='" . $Link . "&page=". $SoTrang ."'><div class='First'>Cuối &raquo;</div></a>";
					}
				}
				else
				{
					if($TrangHienTai - $SoTrangKe - 1 < $i && $i < $TrangHienTai + $SoTrangKe + 1)
					{
						if($i == $TrangHienTai)
							echo "<a href='" . $Link . "&page=" . $i . "'><div class='CurrentPage'>" . $i . "</div></a>";
						else
							echo "<a href='" . $Link . "&page=" . $i . "'><div>" . $i . "</div></a>";
					}
					else
						continue;
				}
			}
			echo '<div class="SoTrang">';
				echo "Trang " . $TrangHienTai . "/" . $SoTrang;
			echo '</div>';
		echo '</div>';
	}
	
	function AutoLogout($Seconds)
	{
		if(time() - $_SESSION['last_activity'] > $Seconds)
		{
			DangXuat();
			$_SESSION['ErrorLogin'] = 'Phiên làm việc của bạn đã kết thúc, vui lòng đăng nhập lại.';
			$_SESSION['last_activity'] = time();
		}
		else
			$_SESSION['last_activity'] = time();
	}
	
	function DangNhap()
	{
		if(isset($_SESSION['LOGIN']) && $_SESSION['LOGIN'] == 1) //Đã đăng nhập
			return true;
		return false;
	}
	function GiaoVienDangNhap()
	{
		if(isset($_SESSION['LOGIN']) && $_SESSION['LOGIN'] == 2) //Đã đăng nhập vs quyền GV
			return true;
		return false;
	}
	function IsAD()
	{
		if(DangNhap() && isset($_SESSION['USER']) && $_SESSION['USER']['MaLoaiNguoiDung'] == 'US1')
			return true;
		return false;
	}
	function IsNVGV() //Nhân viên giáo vụ
	{
		if(DangNhap() && isset($_SESSION['USER']) && $_SESSION['USER']['MaLoaiNguoiDung'] == 'US2')
			return true;
		return false;
	}
	function IsGV() //Giáo viên - Đã được tách ra bảng tbl_giaovien - Giáo viên để tiện cho việc quản lý phân quyền
	{
		if(DangNhap() && isset($_SESSION['GV']))
			return true;
		return false;
	}
	function IsHV() //Nhân viên giáo vụ
	{
		if(DangNhap() && isset($_SESSION['USER']) && $_SESSION['USER']['MaLoaiNguoiDung'] == 'US4')
			return true;
		return false;
	}
	function DangXuat()
	{
		unset($_SESSION['LOGIN']);
		unset($_SESSION['USER']);
		unset($_SESSION['GV']);
	}
	function DinhDangSDT($SDT)
	{
		if(strlen($SDT) == 10 || strlen($SDT) == 11)
		{
			if(strlen($SDT) == 10)
			{
				$t1 = substr($SDT, 0, 3);
				$t2 = substr($SDT, 3, 1);
				$t3 = substr($SDT, 4, 3);
				$t4 = substr($SDT, 7, 3);
			}
			else
			{
				$t1 = substr($SDT, 0, 4);
				$t2 = substr($SDT, 4, 1);
				$t3 = substr($SDT, 5, 3);
				$t4 = substr($SDT, 8, 3);
			}
			$result = $t1 . " " . $t2 . "." . $t3 . "." . $t4;
			return $result;
		}
		return $SDT;
	}
	function TaoDuKienBuoiHoc($MaLopHoc)
	{
		include_once '../classes/khoahoc_bs.php';
		include_once '../classes/lophoc_bs.php';
		include_once '../classes/chuongtrinhhoc_bs.php';
		include_once '../classes/thoigianhoc_bs.php';
		include_once '../classes/ngayhoc_bs.php';
		include_once '../classes/buoihoc_bs.php';
		include_once '../classes/buoihocdukien_bs.php';
		
		$LopHoc = new lophoc_bs();
		$LopHoc->SetMaLopHoc(strtoupper(trim($MaLopHoc)));
		$DLopHoc = $LopHoc->LayDanhSach();
		
		$KhoaHoc = new khoahoc_bs();
		$KhoaHoc->SetMaKhoaHoc($DLopHoc[0]['MaKhoaHoc']);
		$DKhoaHoc = $KhoaHoc->LayDanhSach();
		
		//Ngày khai giảng
		$NgayKhaiGiang = $DKhoaHoc[0]['NgayKhaiGiang'];
		
		$ChuongTrinhHoc = new chuongtrinhhoc_bs();
		$ChuongTrinhHoc->SetMaChuongTrinh($DLopHoc[0]['MaChuongTrinh']);
		$DChuongTrinhHoc = $ChuongTrinhHoc->LayDanhSach();
		
		//Số tiết học của chương trình
		$SoTietHocCT = $DChuongTrinhHoc[0]['SoTiet'];
		
		$ThoiGianHoc = new thoigianhoc_bs();
		$ThoiGianHoc->SetMaThoiGianHoc($DLopHoc[0]['MaThoiGianHoc']);
		$DThoiGianHoc = $ThoiGianHoc->LayDanhSach();
		
		$NgayHoc = new ngayhoc_bs();
		$NgayHoc->SetMaThoiGianHoc($DThoiGianHoc[0]['MaThoiGianHoc']);
		$DNgayHoc = $NgayHoc->LayDanhSach();
		
		//Số tiết mỗi buổi học
		$SoTietMoiBuoiHoc = $DThoiGianHoc[0]['SoTietMoiBuoiHoc'];
		
		$BuoiHoc = new buoihoc_bs();
		$BuoiHoc->SetMaLopHoc($DLopHoc[0]['MaLopHoc']);
		$DBuoiHoc = $BuoiHoc->LayDanhSach();
		
		//Nếu lớp chưa học buổi nào (tạo mới danh sách các buổi học dự kiến)
		if($DBuoiHoc == null)
		{
			//Tính số buổi học dự kiến
			$SoBuoiDuKien = ceil($SoTietHocCT / $SoTietMoiBuoiHoc);
			
			$tmpNgay = $NgayKhaiGiang;
			for($i = 0; $i < $SoBuoiDuKien; $i++)
			{
				$j = 0;
				$tmpNgayHoc = $DNgayHoc[$j]['NgayHoc'];
				while($j < count($DNgayHoc))
				{
					if(NgayTrongTuan($tmpNgay) * 1 == $DNgayHoc[$j]['NgayHoc'] * 1)
					{
						//Thêm buổi học dự kiến ngày đó
						$BuoiHocDuKien = new buoihocdukien_bs();
						$BuoiHocDuKien->SetMaLopHoc($DLopHoc[0]['MaLopHoc']);
						$BuoiHocDuKien->SetNgayHoc($tmpNgay);
						$BuoiHocDuKien->SetMaTrangThai(0);
						$RBuoiHocDuKien = $BuoiHocDuKien->Them();
					}
					$j++;
				}
				$tmpNgay = CongNgay($tmpNgay);
			}
		}
		else //Đã học một vài buổi học, nhưng phải thay đổi lịch
		{
			// 1. Tính số tiết và số buổi đã học
			$SoTietDaHoc = 0;
			$SoBuoiDaHoc = 0;
			for($i = 0; $i < count($DBuoiHoc); $i++)
			{
				$SoTietDaHoc += (float)$DBuoiHoc[$i]['SoTietHoc'];
				$SoBuoiDaHoc++;
			}
			$SoTietConLai = round($SoTietHocCT - $SoTietDaHoc);
			// 2. Xác định ngày tiếp tục của lịch dự kiến
			$tmpNgay = $DBuoiHoc[0]['NgayHoc'];
			$tmpNgay = CongNgay($tmpNgay);
			
			// Xóa các buổi dự kiến đang có của lớp học
			$BuoiHocDuKien = new buoihocdukien_bs();
			$BuoiHocDuKien->SetMaLopHoc($DLopHoc[0]['MaLopHoc']);
			$BuoiHocDuKien->Xoa();
			echo $SoTietConLai . '<br />';
			echo $SoTietMoiBuoiHoc . '<br />';
			//Tính số buổi học dự kiến
			$SoBuoiDuKien = ceil($SoTietConLai / $SoTietMoiBuoiHoc);
			echo $SoBuoiDuKien;
			$i = 0;
			while($i < $SoBuoiDuKien)
			{
			
				$j = 0;
				$tmpNgayHoc = $DNgayHoc[$j]['NgayHoc'];
				while($j < count($DNgayHoc))
				{
					if(NgayTrongTuan($tmpNgay) * 1 == $DNgayHoc[$j]['NgayHoc'] * 1)
					{
						//Thêm buổi học dự kiến ngày đó
						$BuoiHocDuKien = new buoihocdukien_bs();
						$BuoiHocDuKien->SetMaLopHoc($DLopHoc[0]['MaLopHoc']);
						$BuoiHocDuKien->SetNgayHoc($tmpNgay);
						$BuoiHocDuKien->SetMaTrangThai(0);
						$RBuoiHocDuKien = $BuoiHocDuKien->Them();
						$i++;
					}
					$j++;
				}
				$tmpNgay = CongNgay($tmpNgay);
			}
		}
	}
	
	//------------------------------------------------- EXPORT FILE -------------------------------------------------
	function HocVienExport($Data, $Type)
	{
		
	}
	